package com.dsg.entity.apply;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 繳款資料
 * </p>
 *
 * @author system
 * @since 2020-07-04
 */
@Data
@EqualsAndHashCode(callSuper = false)
//@Accessors(chain = true)
@TableName("dsg_apply_pay")
@ApiModel(value = "DsgApplyPay对象", description = "繳款資料")
public class DsgApplyPay implements Serializable {
    private static final long serialVersionUID = 1L;

    /** 申請人 */
    public static final String PAYER_APPLICANT = "1";
    /** 第三方 */
    public static final String PAYER_OTHER = "2";

    /** 信用卡 */
    public static final int PAY_MODE_CDC = 1;
    /** 日結自動轉帳 */
    public static final int PAY_MODE_DAY_ATP = 2;
    /** 星期結自動轉帳 */
    public static final int PAY_MODE_WEEK_ATP = 3;
    /** 半月結自動轉帳 */
    public static final int PAY_MODE_HALF_MONTH_ATP = 4;
    /** 月結自動轉帳 */
    public static final int PAY_MODE_MONTH_ATP = 5;
    /** 支票 */
    public static final int PAY_MODE_CHECK = 6;

    /** 未核对 */
    public static final Integer VERIFY_NO = 0;
    /** 完成核对 */
    public static final Integer VERIFY_YES = 1;

    public static final Integer IS_ENABLE_N = 0;
    public static final Integer IS_ENABLE_Y = 1;

    public static final Integer IS_TRANSFER_N = 0;
    public static final Integer IS_TRANSFER_Y = 1;

    @TableField(exist = false)
    private String userId;

    @TableField(exist = false)
    private List<DsgApplyCar> carList = new ArrayList<>();

    /**
     * 使用中（生效）
     */
    public static final Integer PAY_STATUS_IN_USE = 1;

    @ApiModelProperty(value = "主鍵")
    @TableId("OID")
    private String oid;

    /**
     *主申請單號
     */
    @ApiModelProperty(value = "主申請單號")
    @TableField("MAIN_NO")
    private String mainNo;

    @ApiModelProperty(value = "車輛OIDs")
    @TableField("CAR_OIDS")
    private String carOids;

    /**
     *資料類型
     */
    @ApiModelProperty(value = "資料類型")
    @TableField("OWNS_TYPE")
    private Integer ownsType;

    /**
     * 公司/個人資料主鍵
     */
//    @ApiModelProperty(value = "公司/個人資料主鍵")
//    @TableField("OWNS_ID")
//    private String ownsId;

    /**
     *是否啟用
     */
    @ApiModelProperty(value = "是否啟用")
    @TableField("IS_ENABLE")
    private Integer isEnable;

    /**
     *狀態
     */
    @ApiModelProperty(value = "狀態")
    @TableField("PAY_STATUS")
    private Integer payStatus;

    /**
     *付款方式
     */
    @ApiModelProperty(value = "付款方式")
    @TableField("PAY_MODE")
    private Integer payMode;

    /**
     *月結單提供方式
     */
    @ApiModelProperty(value = "月結單提供方式")
    @TableField("PAY_PRO")
    private Integer payPro;

    /**
     *付款人
     */
    @ApiModelProperty(value = "付款人")
    @TableField("PAYER")
    private String payer;

    /**
     * 支付銀行卡號/帳戶編號
     */
    @ApiModelProperty(value = "支付銀行卡號/帳戶編號")
    @TableField("PAY_ACCOUNT_NO")
    private String payAccountNo;

    /**
     * 支付銀行名稱/帳戶名稱
     */
    @ApiModelProperty(value = "支付銀行名稱/帳戶名稱")
    @TableField("PAY_ACCOUNT_NAME")
    private String payAccountName;

    /**
     * 收款帳戶編號
     */
    @ApiModelProperty(value = "收款帳戶編號")
    @TableField("ACCOUNT_NO")
    private String accountNo;

    /**
     * 收款帳戶名稱
     */
    @ApiModelProperty(value = "收款帳戶名稱")
    @TableField("ACCOUNT_NAME")
    private String accountName;

    /**
     * 結算週期
     */
    @ApiModelProperty(value = "結算週期")
    @TableField("SETTLEMENT_CYCLE")
    private Integer settlementCycle;

    /**
     * 轉賬時間
     */
    @ApiModelProperty(value = "轉賬時間")
    @TableField("TRANSFER_TIME")
    private Date transferTime;

    /**
     * 下次轉賬時間
     */
    @ApiModelProperty(value = "下次轉賬時間")
    @TableField("NEXT_TRANSFER_TIME")
    private Date nextTransferTime;

    /**
     * 有效期
     */
    @ApiModelProperty(value = "有效期")
    @TableField("VALIDATY")
    private Date validaty;

    /**
     * 生效日期
     */
    @ApiModelProperty(value = "生效日期")
    @TableField("EFFECT_TIME")
    private Date effectTime;

    /**
     * 持卡人英文姓名
     */
    @ApiModelProperty(value = "持卡人英文姓名")
    @TableField("HOLDER_EN_NAME")
    private String holderEnName;

    /**
     * 聯絡人電話
     */
    @ApiModelProperty(value = "聯絡人電話")
    @TableField("CONTACT_NUMBER")
    private String contactNumber;


    /**
     * 创建人
     */
    @TableField(value = "CREATER")
    @ApiModelProperty(value = "创建人", name = "creater")
    private String creater;

    /**
     * 创建时间
     */
    @TableField(value = "CREATE_TIME")
    @ApiModelProperty(value = "创建时间", name = "createTime")
    private Date createTime;

    /**
     * 更新人
     */
    @TableField(value = "UPDATER")
    @ApiModelProperty(value = "更新人", name = "updater")
    private String updater;

    /**
     * 更新时间
     */
    @TableField(value = "UPDATE_TIME")
    @ApiModelProperty(value = "更新时间", name = "updateTime")
    private Date updateTime;

    /**
     * 企業編號
     */
    @TableField(value = "ENT_CODE")
    @ApiModelProperty(value = "企業編號", name = "entCode")
    private String entCode;

    /**
     * 信用额度
     */
    @TableField(value = "CREDIT_LIMIT")
    @ApiModelProperty(value = "信用额度", name = "creditLimit")
    private Double creditLimit;

    /**
     * 户口结余
     */
    @TableField(value = "ACC_BALANCE")
    @ApiModelProperty(value = "户口结余", name = "accBalance")
    private Double accBalance;

    @ApiModelProperty(value = "核对状态")
    @TableField("VERIFY")
    private Integer verify;

    @ApiModelProperty(value = "是否可轉移付款")
    @TableField("IS_TRANSFER")
    private int isTransfer;

    @TableField("APP_NO")
    private String appNo;

    @TableField(value = "PRDTY")
    @ApiModelProperty(value = "扣款周期", name = "prdty")
    private String PRDTY;

    @TableField(value = "PAY_LIMIT")
    @ApiModelProperty(value = "扣款/支付限制", name = "payLimit")
    private BigDecimal payLimit;

    @ApiModelProperty(value = "到期日期")
    @TableField("EXPIRY_DATE")
    private Date expiryDate;

    @ApiModelProperty(value = "扣一元状态")
    @TableField("DED_STATUS")
    private Integer dedStatus;

    @TableField(value = "DDA_NUMBER")
    @ApiModelProperty(value = "DDA编号")
    private String ddaNumber;

    @ApiModelProperty(value = "車牌編號")
    @TableField(exist = false)
    private String carNo;

    @ApiModelProperty(value = "收款方式")
    @TableField(exist = false)
    private String payMethod;

    @ApiModelProperty(value = "客戶/公司編號")
    @TableField("CUS_NO")
    private String cusNo;

    @ApiModelProperty(value = "業務申請單狀態OID")
    @TableField(exist = false)
    private String statusOid;

    @ApiModelProperty(value = "付款帳號")
    @TableField(exist = false)
    private String bankCode;

    @ApiModelProperty(value = "付款人")
    @TableField(exist = false)
    private String paymentName;

    @ApiModelProperty(value = "商戶編號")
    @TableField(exist = false)
    private String merchantNo;

    @ApiModelProperty(value = "交易金額")
    @TableField(exist = false)
    private BigDecimal tranValue;

    @ApiModelProperty(value = "付款賬號是否等於收款賬號 0:否 1:是")
    @TableField(exist = false)
    private String flag;

    @ApiModelProperty(value = "扣一元狀態集合")
    @TableField(exist = false)
    private String dedStatusList;

    @ApiModelProperty(value = "節點配置名稱")
    @TableField(exist = false)
    private String nodeName;
}
